package votaciones;

import java.util.*;
import java.lang.*;

import contenidos.AlmacenCursos;
import contenidos.AlmacenDes;
import contenidos.AlmacenEventos;

import contenidos.Curso;
import contenidos.Descarga;
import contenidos.Evento;

import usuarios.Usuario;

public class FabVotaciones {
	private static FabVotaciones INSTANCE = null;

	private FabVotaciones() {

	}

	public static FabVotaciones getInstance() {
		if (INSTANCE == null)
			INSTANCE = new FabVotaciones();
		return INSTANCE;

	}

	public void createVotacion(String nombre, LinkedList preguntas, Tvotacion tv/*
																				 * ,
				La caducidad por defecto es un mes																 * Usuario
																				 * usr
																				 */) {
		// if (usr.getIdUsuario() == -1) { alternativa primitiva al root
		LinkedList aux = new LinkedList();
		AlmacenVotaciones.getInstance();
		Date fecha = new Date();
		Date caducidad= new Date(fecha.getYear(),fecha.getMonth()+1,fecha.getDay());
		if (tv == Tvotacion.DESCARGA) {
			Iterator it = AlmacenDes.getInstance().getDescargas().iterator();
			while (it.hasNext()) {
				aux.add(((Descarga) (it.next())).getNombre());

			}
			AlmacenVotaciones.getInstance().addVotacion(
					new Votacion(nombre, fecha, aux, caducidad, tv));
		}
		if (tv == Tvotacion.EVENTO) {
			Iterator it = AlmacenEventos.getInstance().getEventos().iterator();
			while (it.hasNext()) {
				aux.add(((Evento) (it.next())).getNombreEvento());

			}
			AlmacenVotaciones.getInstance().addVotacion(
					new Votacion(nombre, fecha, aux, caducidad, tv));
		}

		if (tv == Tvotacion.CURSO) {
			Iterator it = AlmacenCursos.getInstance().getCursos().iterator();
			while (it.hasNext()) {
				if (!aux.contains((Curso) (it.next())))

					aux.add(((Curso) (it.next())).getTipoCurso());

			}
			AlmacenVotaciones.getInstance().addVotacion(
					new Votacion(nombre, fecha, aux, caducidad, tv));

		} else
			AlmacenVotaciones.getInstance().addVotacion(
					new Votacion(nombre,fecha, preguntas, caducidad, tv));
	}
}
// } Cierre del if
